acessosg = {["gruposAB"] = 0, ["gruposCD"] = 0, ["gruposEF"] = 0, ["gruposGH"] = 0}
grupos = nil
t0 = 0
t1 = 0
filename = "../user_preferences"

function file_exists()
	file, err = io.open(filename, "r")

	if (err ~= nil) then
		print('[t-cup]: Creating new user preferences file...')

		file = io.open(filename, "w")
		file:write("tela_preferida=principal:0;grupos:0;matamata:0\n")
		file:write("gruposAB=0:0\n")
		file:write("gruposCD=0:0\n")
		file:write("gruposEF=0:0\n")
		file:write("gruposGH=0:0\n")
		file:write("sua_selecao=brazil\n")
		file:close()

		return false
	end

	file:close()

	return true
end

function load_groups()
	print('[t-cup]: Loading group')

	local tgrupos = {}	local acessos = 0
	local tempo   = 0

	if (file_exists()) then
		for line in io.open(filename):lines() do
			local key, value1, value2 = string.match(line, "^([a-zA-Z0-9_]*)%=([0-9]*):*([0-9]*)$")

			if (key ~= nil) then		
				table.insert(tgrupos, key .. '=' .. value1 .. ':' .. value2)
				
				if (tonumber(value1) > acessos) then
					grupos = key
					acessos = tonumber(value1)
					tempo = tonumber(value2)
				elseif  (tonumber(value1) == acessos) then
					for k,v in pairs(tgrupos) do
						local g, a, t = string.match(v, "^([a-zA-Z0-9_]*)%=([0-9]*):*([0-9]*)$")
						if (g == key) and (tonumber(a) == acessos) and (tonumber(t) > tempo) then
							grupos = key
							print(g, a, t)
						end
					end				end
			end
		end
	end

	if (grupos == nil) then
		grupos = 'gruposAB'
	end

	event.post('out', {class = 'ncl', type = 'presentation', action = 'start', label = grupos})
	event.post('out', {class = 'ncl', type = 'presentation', action = 'stop', label = grupos})
end

function save_time(groups)
	local aa = ""
	local muda = 0

	file = io.open(filename, "r")
	for line in file:lines() do
		key, value1, value2 = string.match(line, "^([a-zA-Z0-9_]*)%=([0-9]*):*([0-9]*)$")
		if (key == groups) then
			aa = aa .. key .. "=" .. (value1 + acessosg[grupos]) .. ':' .. (value2 + os.difftime(t1, t0)) .. "\n"
			muda = 1
		else
			aa = aa .. line .. "\n"
		end
	end
	file:close()
	if (muda == 1) then
		file = io.open(filename, "w")
		file:write(aa)
		file:flush()
		file:close()
	end
end

function imprimeResultado()
    local filename = "../webservice/grupojogos"
    file, err = io.open(filename, "r")
    if (err == nil) then
        canvas:attrFont('vera',26,'bold')
        local inicio = false
        local i = 0
        local mudaGrupo = 1
        canvas:attrColor(0, 0, 0, 255) 
        canvas:drawRect('fill', 539, 522, 425, 260)
        canvas:attrColor('black')
        for line in file:lines() do
	    --print ("******** line = " .. line)
            local grupo = string.match(line, "^([a-zA-Z]*)$")
            if (grupo ~= nil) then
                if (grupo == grupos) then inicio = true
                    elseif (inicio) then break
                end
            elseif (inicio) then
                local value1, value2 = string.match(line, "^([0-9]*)[ ]*([0-9]*)$")
                grupo = string.match(line, "^([a-zA-Z ]*)$")
                if (value1 ~= nil) then
			canvas:drawText(539 + (mudaGrupo * 325), 522 + (i * 32), value1)
			canvas:drawText(589 + (mudaGrupo * 325), 522 + (i * 32), value2)
                elseif (grupo ~= nil) then
                    i = 0
                    if (mudaGrupo == 1) then
                        mudaGrupo = 0
                    else
                        mudaGrupo = 1
                    end
                end
                i = i + 1
                canvas:flush()
            end
        end
        file:close()
    else 
        print (err)
    end
    return
end

function handler(evt)
	print('[grupos]')
	print(evt.name, evt.action, evt.value, evt.label)

	if (evt.class == 'ncl') and
	   (evt.type  == 'presentation') and
	   (evt.name  ==  nil) and
	   (evt.label  ~=  'imprimeResultado') and
	   (evt.action == 'start') then
		load_groups()
		imprimeResultado()
		t0 = os.time()
		return
	end

	if (evt.class == 'ncl') and
	   (evt.type  == 'presentation') and
	   (evt.label  == 'imprimeResultado') and
	   (evt.action == 'start') then
		imprimeResultado()
		return
	end

	if (evt.type == 'attribution') then
		t1 = os.time()

		if (os.difftime(t1, t0) > 4) then
			acessosg[grupos] = acessosg[grupos] + 1
		end
		save_time(grupos)

		event.post('out', {class = evt.class, type = evt.type, name = evt.name, action = 'stop', value = evt.value})

		if (evt.value == 'proximo') then
			if (grupos == 'gruposAB') then
				grupos = 'gruposCD'
			elseif (grupos == 'gruposCD') then
				grupos = 'gruposEF'
			elseif (grupos == 'gruposEF') then
				grupos = 'gruposGH'
			end
		elseif (evt.value == 'anterior') then
			if (grupos == 'gruposGH') then
				grupos = 'gruposEF'
			elseif (grupos == 'gruposEF') then
				grupos = 'gruposCD'
			elseif (grupos == 'gruposCD') then
				grupos = 'gruposAB'
			end
		elseif (evt.value == 'sair') then
			event.post('out', {class = 'ncl', type = 'presentation', name = nil, action = 'stop'})
			return
		end

		t0 = os.time()
		event.post('out', {class = 'ncl', type = 'presentation', action = 'start', label = grupos})
		event.post('out', {class = 'ncl', type = 'presentation', action = 'stop', label = grupos})
		imprimeResultado()
	end
end

event.register(handler)
